package com.zsd.android.opengldemo.renderer;

import android.opengl.GLES20;
import android.opengl.GLSurfaceView;
import android.view.View;

import com.zsd.android.opengldemo.shape.Triangle;

import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;

public class FGLRender implements GLSurfaceView.Renderer {

    private View mView;
    private Triangle triangle;

    public FGLRender(View mView) {
        this.mView = mView;
    }

    /**
     * 当Surface被创建的时候，GLSurfaceView会调用这个方法，
     * 这发生在应用程序创建的第一次，
     * 并且当设备被唤醒或者用户从其他activity切换回去时，也会被调用。
     * @param gl
     * @param config
     */
    @Override
    public void onSurfaceCreated(GL10 gl, EGLConfig config) {
        GLES20.glClearColor(0, 0, 0, 0);
        triangle = new Triangle();
    }

    /**
     * 在Surface创建以后，每次Surface尺寸变化后，这个方法都会调用
     * @param gl
     * @param width
     * @param height
     */
    @Override
    public void onSurfaceChanged(GL10 gl, int width, int height) {
        triangle.onSurfaceChanged(gl, width, height);
    }

    /**
     * 当绘制每一帧的时候会被调用。
     * 不断被调，在这里渲染
     * @param gl
     */
    @Override
    public void onDrawFrame(GL10 gl) {
        GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT);
        triangle.onDrawFrame(gl);
    }
}
